package br.com.fip.si.praticas.teste;

import static junit.framework.Assert.assertEquals;

import org.junit.Before;
import org.junit.Test;

import br.com.fip.si.praticas.exception.AtualizacaoCodigoException;
import br.com.fip.si.praticas.modelo.Bolao;
import br.com.fip.si.praticas.modelo.Campeonato;
import br.com.fip.si.praticas.modelo.Jogo;
import br.com.fip.si.praticas.modelo.Time;

public class CampeonatoTest {

	private Campeonato c;
	private Time t1,t2,t3,t4;
	private Bolao b1,b2, b3;
	private Jogo j1,j2,j3;
	@Before
	public void setUp() throws Exception {
		c = new Campeonato("Brasileirao");
		
		t1 = new Time("Flamengo");
		t2 = new Time("Vasco");
		t3 = new Time("Fluminense");
		t4 = new Time("Cruzeiro");
		
		b1 = new Bolao(1, "Brasileirao");
		b2 = new Bolao(2,"Copa 2014");
		
		j1 = new Jogo(1,t1,t2);
		j2 = new Jogo(2,t2,t1);
		
		c.criarBolao(b1);
		c.criarBolao(b2);
		
		c.addJogo(j1);
		c.addJogo(j2);
		
		c.addTime(t1);
		c.addTime(t2);
		c.addTime(t3);
		c.addTime(t4);
		
		c.removerTime("Flamengo");
		c.removeJogo(2);
		c.removerBolao(2);
		
		t3 = c.pesquisarTime("Flamengo");
		b3 = c.pesquisarBolao(1);
		j3 = c.pesquisaJogo(j1);
	
	}

	@Test
	public void testAddTime() {
		assertEquals(3, c.getTimes().size());
	}

	@Test
	public void testRemoverTime() {
		assertEquals(3, c.getTimes().size());
	}

	@Test
	public void testPesquisarTime() {
		assertEquals("Vasco", t2.getNome());
	}

	@Test
	public void testCriarBolao() {
		assertEquals(1, c.getBoloes().size());
	}

	@Test
	public void testRemoverBolao(){
		assertEquals(1, c.getBoloes().size());
	}

	@Test(expected=AtualizacaoCodigoException.class)
	public void testAlterarBolao() throws AtualizacaoCodigoException {
		c.alterarBolao(b2);
	}

	@Test
	public void testPesquisarBolao() {
		assertEquals("Brasileirao", b3.getNome());
	}

	@Test
	public void testAddJogo() {
		assertEquals(1, c.getJogos().size());
	}

	@Test
	public void testPesquisaJogo() {
		assertEquals(1, j3.getCodigo());
	}

	@Test
	public void testRemoveJogo() {
		assertEquals(1, c.getJogos().size());
	}

	@Test(expected=AtualizacaoCodigoException.class)
	public void testAtualizaJogo() throws AtualizacaoCodigoException {
		c.atualizaJogo(j2);
	}
	
	@Test
	public void testGeraListaJogos(){
		c.gerarListaDeJogos();
		System.out.println(c.getJogos().size());
	}
	
}
